namespace SmartMathLibrary.Interfaces.Web.Twitter
{
    /// <summary>
    /// Interface to implement a User class.
    /// </summary>
    public interface IUser
    {
        /// <summary>
        /// Gets or sets the id information of the user.
        /// </summary>
        /// <value>The id information of the user.</value>
        string Id { get; set; }

        /// <summary>
        /// Gets or sets the name information of the user.
        /// </summary>
        /// <value>The name information of the user.</value>
        string Name { get; set; }

        /// <summary>
        /// Gets or sets the screenName information of the user.
        /// </summary>
        /// <value>The screenName information of the user.</value>
        string ScreenName { get; set; }

        /// <summary>
        /// Gets or sets the location information of the user.
        /// </summary>
        /// <value>The location information of the user.</value>
        string Location { get; set; }

        /// <summary>
        /// Gets or sets the description information of the user.
        /// </summary>
        /// <value>The description information of the user.</value>
        string Description { get; set; }

        /// <summary>
        /// Gets or sets the profileImageUrl information of the user.
        /// </summary>
        /// <value>The profileImageUrl information of the user.</value>
        string ProfileImageUrl { get; set; }

        /// <summary>
        /// Gets or sets the url information of the user.
        /// </summary>
        /// <value>The url information of the user.</value>
        string Url { get; set; }

        /// <summary>
        /// Gets or sets the protectedStatus information of the user.
        /// </summary>
        /// <value>The protectedStatus information of the user.</value>
        bool ProtectedStatus { get; set; }

        /// <summary>
        /// Gets or sets the followersCount information of the user.
        /// </summary>
        /// <value>The followersCount information of the user.</value>
        int FollowersCount { get; set; }

        /// <summary>
        /// Gets or sets the profileBackgroundColor information of the user.
        /// </summary>
        /// <value>The profileBackgroundColor information of the user.</value>
        string ProfileBackgroundColor { get; set; }

        /// <summary>
        /// Gets or sets the profileTextColor information of the user.
        /// </summary>
        /// <value>The profileTextColor information of the user.</value>
        string ProfileTextColor { get; set; }

        /// <summary>
        /// Gets or sets the profileLinkColor information of the user.
        /// </summary>
        /// <value>The profileLinkColor information of the user.</value>
        string ProfileLinkColor { get; set; }

        /// <summary>
        /// Gets or sets the profileSidebarFillColor information of the user.
        /// </summary>
        /// <value>The profileSidebarFillColor information of the user.</value>
        string ProfileSidebarFillColor { get; set; }

        /// <summary>
        /// Gets or sets the profileSidebarBorderColor information of the user.
        /// </summary>
        /// <value>The profileSidebarBorderColor information of the user.</value>
        string ProfileSidebarBorderColor { get; set; }

        /// <summary>
        /// Gets or sets the friendsCount information of the user.
        /// </summary>
        /// <value>The friendsCount information of the user.</value>
        int FriendsCount { get; set; }

        /// <summary>
        /// Gets or sets the createdAt information of the user.
        /// </summary>
        /// <value>The createdAt information of the user.</value>
        string CreatedAt { get; set; }

        /// <summary>
        /// Gets or sets the favouritesCount information of the user.
        /// </summary>
        /// <value>The favouritesCount information of the user.</value>
        int FavouritesCount { get; set; }

        /// <summary>
        /// Gets or sets the utcOffset information of the user.
        /// </summary>
        /// <value>The utcOffset information of the user.</value>
        string UtcOffset { get; set; }

        /// <summary>
        /// Gets or sets the timeZone information of the user.
        /// </summary>
        /// <value>The timeZone information of the user.</value>
        string TimeZone { get; set; }

        /// <summary>
        /// Gets or sets the profileBackgroundImageUrl information of the user.
        /// </summary>
        /// <value>The profileBackgroundImageUrl information of the user.</value>
        string ProfileBackgroundImageUrl { get; set; }

        /// <summary>
        /// Gets or sets the profileBackgroundTile information of the user.
        /// </summary>
        /// <value>The profileBackgroundTile information of the user.</value>
        bool ProfileBackgroundTile { get; set; }

        /// <summary>
        /// Gets or sets the statusesCount information of the user.
        /// </summary>
        /// <value>The statusesCount information of the user.</value>
        int StatusesCount { get; set; }

        /// <summary>
        /// Gets or sets the notifications information of the user.
        /// </summary>
        /// <value>The notifications information of the user.</value>
        string Notifications { get; set; }

        /// <summary>
        /// Gets or sets the verified information of the user.
        /// </summary>
        /// <value>The verified information of the user.</value>
        bool Verified { get; set; }

        /// <summary>
        /// Compares the current user instance to another one.
        /// </summary>
        /// <param name="compare">The instance to compare.</param>
        /// <returns>True if the values of the current instance and the specified instance are equal otherwise, false.</returns>
        bool CompareTo(User compare);
    }
}